﻿/// <reference path="../Scripts/msls-1.0.0.js" />

window.myapp = msls.application;

(function (lightSwitchApplication) {

    var $Entity = msls.Entity,
        $DataService = msls.DataService,
        $DataWorkspace = msls.DataWorkspace,
        $defineEntity = msls._defineEntity,
        $defineDataService = msls._defineDataService,
        $defineDataWorkspace = msls._defineDataWorkspace,
        $DataServiceQuery = msls.DataServiceQuery,
        $toODataString = msls._toODataString;

    function Group(entitySet) {
        /// <summary>
        /// 表示 Group 实体类型。
        /// </summary>
        /// <param name="entitySet" type="msls.EntitySet" optional="true">
        /// 应包含此 group 的实体集。
        /// </param>
        /// <field name="Id" type="Number">
        /// 获取或设置此 group 的 id。
        /// </field>
        /// <field name="RowVersion" type="Array">
        /// 获取或设置此 group 的 rowVersion。
        /// </field>
        /// <field name="Name" type="String">
        /// 获取或设置此 group 的 name。
        /// </field>
        /// <field name="Order" type="Number">
        /// 获取或设置此 group 的 order。
        /// </field>
        /// <field name="SiteCollection" type="msls.EntityCollection" elementType="msls.application.Site">
        /// 获取此 group 的 siteCollection。
        /// </field>
        /// <field name="details" type="msls.application.Group.Details">
        /// 获取此 group 的详细信息。
        /// </field>
        $Entity.call(this, entitySet);
    }

    function Site(entitySet) {
        /// <summary>
        /// 表示 Site 实体类型。
        /// </summary>
        /// <param name="entitySet" type="msls.EntitySet" optional="true">
        /// 应包含此 site 的实体集。
        /// </param>
        /// <field name="Id" type="Number">
        /// 获取或设置此 site 的 id。
        /// </field>
        /// <field name="RowVersion" type="Array">
        /// 获取或设置此 site 的 rowVersion。
        /// </field>
        /// <field name="Image" type="Array">
        /// 获取或设置此 site 的 image。
        /// </field>
        /// <field name="Name" type="String">
        /// 获取或设置此 site 的 name。
        /// </field>
        /// <field name="Port" type="Number">
        /// 获取或设置此 site 的 port。
        /// </field>
        /// <field name="Order" type="Number">
        /// 获取或设置此 site 的 order。
        /// </field>
        /// <field name="Group" type="msls.application.Group">
        /// 获取或设置此 site 的 group。
        /// </field>
        /// <field name="DBInfoCollection" type="msls.EntityCollection" elementType="msls.application.DBInfo">
        /// 获取此 site 的 dBInfoCollection。
        /// </field>
        /// <field name="details" type="msls.application.Site.Details">
        /// 获取此 site 的详细信息。
        /// </field>
        $Entity.call(this, entitySet);
    }

    function DBInfo(entitySet) {
        /// <summary>
        /// 表示 DBInfo 实体类型。
        /// </summary>
        /// <param name="entitySet" type="msls.EntitySet" optional="true">
        /// 应包含此 dBInfo 的实体集。
        /// </param>
        /// <field name="Id" type="Number">
        /// 获取或设置此 dBInfo 的 id。
        /// </field>
        /// <field name="RowVersion" type="Array">
        /// 获取或设置此 dBInfo 的 rowVersion。
        /// </field>
        /// <field name="Explanation" type="String">
        /// 获取或设置此 dBInfo 的 explanation。
        /// </field>
        /// <field name="Server" type="String">
        /// 获取或设置此 dBInfo 的 server。
        /// </field>
        /// <field name="Port" type="Number">
        /// 获取或设置此 dBInfo 的 port。
        /// </field>
        /// <field name="UserName" type="String">
        /// 获取或设置此 dBInfo 的 userName。
        /// </field>
        /// <field name="Password" type="String">
        /// 获取或设置此 dBInfo 的 password。
        /// </field>
        /// <field name="DBName" type="String">
        /// 获取或设置此 dBInfo 的 dBName。
        /// </field>
        /// <field name="Site" type="msls.application.Site">
        /// 获取或设置此 dBInfo 的 site。
        /// </field>
        /// <field name="details" type="msls.application.DBInfo.Details">
        /// 获取此 dBInfo 的详细信息。
        /// </field>
        $Entity.call(this, entitySet);
    }

    function ApplicationData(dataWorkspace) {
        /// <summary>
        /// 表示 ApplicationData 数据服务。
        /// </summary>
        /// <param name="dataWorkspace" type="msls.DataWorkspace">
        /// 创建此数据服务的数据工作区。
        /// </param>
        /// <field name="GroupSet" type="msls.EntitySet">
        /// 获取 GroupSet 实体集。
        /// </field>
        /// <field name="SiteSet" type="msls.EntitySet">
        /// 获取 SiteSet 实体集。
        /// </field>
        /// <field name="DBInfoSet" type="msls.EntitySet">
        /// 获取 DBInfoSet 实体集。
        /// </field>
        /// <field name="details" type="msls.application.ApplicationData.Details">
        /// 获取此数据服务的详细信息。
        /// </field>
        $DataService.call(this, dataWorkspace);
    };
    function DataWorkspace() {
        /// <summary>
        /// 表示数据工作区。
        /// </summary>
        /// <field name="ApplicationData" type="msls.application.ApplicationData">
        /// 获取 ApplicationData 数据服务。
        /// </field>
        /// <field name="details" type="msls.application.DataWorkspace.Details">
        /// 获取此数据工作区的详细信息。
        /// </field>
        $DataWorkspace.call(this);
    };

    msls._addToNamespace("msls.application", {

        Group: $defineEntity(Group, [
            { name: "Id", type: Number },
            { name: "RowVersion", type: Array },
            { name: "Name", type: String },
            { name: "Order", type: Number },
            { name: "SiteCollection", kind: "collection", elementType: Site }
        ]),

        Site: $defineEntity(Site, [
            { name: "Id", type: Number },
            { name: "RowVersion", type: Array },
            { name: "Image", type: Array },
            { name: "Name", type: String },
            { name: "Port", type: Number },
            { name: "Order", type: Number },
            { name: "Group", kind: "reference", type: Group },
            { name: "DBInfoCollection", kind: "collection", elementType: DBInfo }
        ]),

        DBInfo: $defineEntity(DBInfo, [
            { name: "Id", type: Number },
            { name: "RowVersion", type: Array },
            { name: "Explanation", type: String },
            { name: "Server", type: String },
            { name: "Port", type: Number },
            { name: "UserName", type: String },
            { name: "Password", type: String },
            { name: "DBName", type: String },
            { name: "Site", kind: "reference", type: Site }
        ]),

        ApplicationData: $defineDataService(ApplicationData, lightSwitchApplication.rootUri + "/ApplicationData.svc", [
            { name: "GroupSet", elementType: Group },
            { name: "SiteSet", elementType: Site },
            { name: "DBInfoSet", elementType: DBInfo }
        ], [
            {
                name: "GroupSet_SingleOrDefault", value: function (Id) {
                    return new $DataServiceQuery({ _entitySet: this.GroupSet },
                        lightSwitchApplication.rootUri + "/ApplicationData.svc" + "/GroupSet(" + "Id=" + $toODataString(Id, "Int32?") + ")"
                    );
                }
            },
            {
                name: "SiteSet_SingleOrDefault", value: function (Id) {
                    return new $DataServiceQuery({ _entitySet: this.SiteSet },
                        lightSwitchApplication.rootUri + "/ApplicationData.svc" + "/SiteSet(" + "Id=" + $toODataString(Id, "Int32?") + ")"
                    );
                }
            },
            {
                name: "DBInfoSet_SingleOrDefault", value: function (Id) {
                    return new $DataServiceQuery({ _entitySet: this.DBInfoSet },
                        lightSwitchApplication.rootUri + "/ApplicationData.svc" + "/DBInfoSet(" + "Id=" + $toODataString(Id, "Int32?") + ")"
                    );
                }
            },
            {
                name: "QueryBySiteID", value: function (SiteId) {
                    return new $DataServiceQuery({ _entitySet: this.DBInfoSet },
                        lightSwitchApplication.rootUri + "/ApplicationData.svc" + "/QueryBySiteID()",
                        {
                            SiteId: $toODataString(SiteId, "Int32?")
                        });
                }
            }
        ]),

        DataWorkspace: $defineDataWorkspace(DataWorkspace, [
            { name: "ApplicationData", type: ApplicationData }
        ])

    });

}(msls.application));
